////常对象（用const修饰的对象、对象的指针、对象的引用）和非常对象（没有被const修饰的对象、指针、引用）
////常函数（编译器补的this参数有const修饰）和非常对象（编译器补的this参数没有const修饰）
//#include <iostream>
//#include <cstring>
//
//using namespace std;
//
//class Integer {
//public:
//    void setInfo(int i) {//非常函数
//        m_i = i;
//    }
//
//    void getInfo() {//非常函数
//        cout << "非常函数getinfo: " << m_i << endl;
//    }
//
//    void getInfo(/*const Integer* this*/) const {//常函数
////        this->m_i = 666;
//        const_cast<Integer *>(this)->m_i = 666;
//        cout << "常函数getInfo: " << m_i << endl;
//    }
//
//
//private:
//    /* mutable*/ int m_i;
//};
//
//int main(void) {
//    Integer ix;//非常对象
//    Integer *pix = &ix;//pix是非常对象
//    Integer &rix = ix;//rix是非常对象
//
//    ix.setInfo(1000);
//    ix.getInfo();//getInfo(&h)-->实参为Integer* 非常对象优先选择非常函数，也可以选择常函数
//    const Integer cix = ix;//cix是常对象
//    const Integer *pcx = &cix;//pcx是常对象
//    const Integer &rcix = cix;//rcix是常对象
//    cix.getInfo();//getInfo(&cix) -- >实参是const Integer*
//
//    return 0;
//}